import java.applet.Applet;
import java.awt.*;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
//助教,你要測試的話,可以將視窗放到最大,
//然後把你的文章剪貼到程式的輸入區,就可以執行了。
//本程式,建議使用 jdk 1.02 編譯執行
//將文章分成句子。
final class StringAnalyst extends StringTokenizer{
StringAnalyst(String str){
super(str,".?");//用句點、問號做分隔字元
}
}
//將句子分成單字。
final class SentenceAnalyst extends StringTokenizer{
SentenceAnalyst(String str){
super(str,"\n\r\t ,:");//用這些字元分隔字元
}
}
//框架視窗類別,就是有最大化、最小化…的框框
final class MyFrame extends Frame{
static int frameNumber=0;//計錄總數
static int frameIndex=0;//框架索引
public MyFrame(String str){
super(str+" - "+ ++frameIndex);//標題是第 frameIndex 個框架視窗
frameNumber++;
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){//如果按下了『視窗關閉』
if(--frameNumber==0){//如果全部都結束了
dispose();
System.exit(0);//離開 java 虛擬機器
}
else
dispose();//關閉框架視窗
}
return super.handleEvent(evt);//丟給父類別處理
}
}//end of class MyFrame
//放 awt 元件的容器
final class MyPanel extends Panel{
final int textAreaNumber=4;
Panel[] panelSmall;
Panel[] panelBig;
Label[] label;
TextArea[] text;
Button execBtn,clearBtn,newWindowBtn;
//初使化,按鍵、文字區、標題……等
public MyPanel(){
int i;
//設定三個按鍵內容
execBtn=new Button("Execute");
clearBtn=new Button("Clear");
newWindowBtn=new Button("New window");
//設定標題
label=new Label[4];
label[0]=new Label("Input area",Label.CENTER);
label[1]=new Label("Words",Label.CENTER);
label[2]=new Label("Sentences",Label.CENTER);
label[3]=new Label("Result",Label.CENTER);
text=new TextArea[textAreaNumber];
panelSmall=new Panel[textAreaNumber];
panelBig=new Panel[2];
for(i=0;imaxLetterNumber){
maxLetterNumber=word.length();
maxLetterNumberWord=word;//換上字母最多的字
}//end of if
}//end of for
if(wordNumber>maxWordNumber){
maxWordNumber=wordNumber;
maxWordNumberSentence=sentence.toString();//換上字數最多的句子
}//end of if
text[2].appendText("["+ ++si+"]"+
sentence.toString()+'\n');//輸出句子
}//end of while
//顯示結果。
text[3].appendText("(1) Total sentences : "+
totalSentences+'\n');
text[3].appendText("(2) Total words : "+
totalWords+'\n');
text[3].appendText("(3) Total letters : "+
totalLetters+'\n');
text[3].appendText("(4) Average words of a sentence : "+
(double)totalWords/totalSentences+'\n');
text[3].appendText("(5) Average letters of a word : "+
(double)totalLetters/totalWords+'\n');
text[3].appendText("(6) {"+maxLetterNumberWord+"} has "+
maxLetterNumber+" letters.\n");
text[3].appendText("(7) {"+maxWordNumberSentence+"} has "+
maxWordNumber+" words.\n");
}//end of go()
}//end of class MyPanel
public class WinHw1 extends Applet{
//如果是執行 Applet 的話,由此開始執行
public void init(){
setLayout(new BorderLayout(0,0));
add("Center",new MyPanel());//把『我的容器』加到中間
}
//如果是執行 Application 的話,由此開始執行
public static void main(String[] args)
{
MyFrame frame=new MyFrame("[ Home Work 1 ]");
frame.setLayout(new BorderLayout(0,0));
frame.add("Center",new MyPanel());//把『我的容器』加到中間
frame.pack();
frame.show();
}
}//end of class WinHw1